/*
 * Copyright (c) 2010-2011, The MiCode Open Source Community (www.micode.net)
 *
 * This file is part of FileExplorer.
 *
 * FileExplorer is free software: you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 *
 * FileExplorer is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with SwiFTP.  If not, see <http://www.gnu.org/licenses/>.
 */

package com.ttrj.fileexplorer;

import android.annotation.SuppressLint;
import java.io.File;
import java.io.FilenameFilter;
import java.util.Arrays;
import java.util.HashSet;

public class FilenameExtFilter implements FilenameFilter {

	private HashSet<String> mExts = new HashSet<String>();

	// using lower case
	public FilenameExtFilter(String[] exts) {
		if (exts != null) {
			mExts.addAll(Arrays.asList(exts));
		}
	}

	@SuppressLint("DefaultLocale")
	public boolean contains(String ext) {
		return mExts.contains(ext.toLowerCase());
	}

	@SuppressLint("DefaultLocale")
	@Override
	public boolean accept(File dir, String filename) {

		File file = new File(dir + File.separator + filename);
		if (file.isDirectory()) {
			return true;
		}

		int dotPosition = filename.lastIndexOf('.');
		if (dotPosition != -1) {
			String ext = (String) filename.subSequence(dotPosition + 1, filename.length());
			return contains(ext.toLowerCase());
		}

		return false;
	}
}
